Skip to content

fix(mgs,#13778): MGS-30 non-regression ScatterSearch -- prose timings re-ancree - #20242

Merged
myia-ai-01 merged 3 commits into
mainfrom
fix/13778-mgs30-scattersearch-nonreg
Oct 10, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
fix/13778-mgs30-scattersearch-nonreg

Conversation

@jsboige

@jsboige jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-dotnet — lane myia-po-2027:CoursIA — prev: DEEP/notebook-dotnet #20239

Tranche #13778 : non-régression paire ScatterSearch (MGS-30)

Dernier item non-claimé de la liste du 05/10 (ai-01 : « la non-régression n'est pas mesurée sur les paires restantes »). MGS-30 re-devenu exécutable par #19939 (08/10) — sa re-mesure au sous-module courant referme le point.

Mesure (re-exécution appariée : graines {0,1,7,42}, pop 50, 160 générations, 3 bras)

Métrique Committé (#19939) Frais (10/10, sous-module 2b21a6ae)
MGS-complet conflits/évals 54/56/54/43 à 7998/8000/8000/7998 identique
MGS-ablate conflits/évals 54/56/50/45 à 8000×4 identique
mealpy-jumeau conflits 53/48/53/50 (rep-sets identiques, y compris 50/50/48/48 graine 1) identique
Médianes 54,0 / 52,0 / 51,5 54,0 / 52,0 / 51,5
Déterminisme 3 répétitions par graine identique
ms/éval 0,099 / 0,020 / 0,119 0,241 / 0,056 / 0,291 (métrique machine)

Verdict : NO REGRESSION. Les cellules d'exercices (1 : budget ×4 ; 2 : balayage QualityFraction ; 3 : profil fitness) sont byte-identiques aux sorties committées — seul le banc principal et le profil de coût bougent, uniquement sur les colonnes de temps.

Prose ré-ancrée

La lecture de la cellule [14] citait 0,099 contre 0,119 (ms/éval) et 6,44× (fitness) — ré-ancrés sur les valeurs fraîches 0,241 contre 0,291 (ratio 0,83× constant entre les deux exécutions) et 4,17×, avec la variance par siège documentée (même discipline que #20239 sur MGS-29).

Preuves d'exécution

  • dotnet_executor.py --kernel .net-csharp : 10/10 cellules, 0 erreur (89,8 s)
  • Sous-module reconstruit (Debug net9.0, GeneticSharp 4406ad7, 0 erreur) ; pont PythonNet mealpy 3.0.2, sanity check coût C#/Python passée
  • strip_probe_banner appliqué ; organes au HEAD committé : prose-counts OK, output-failure 0 regressed, output-collapse 0 flagged, source-collapse 0 flagged

Aucune cellule code modifiée (markdown seulement en [14]) ; sorties fraîches committées (C.2).

See #13778 — tranche ScatterSearch. Part of #1203.

🤖 Generated with Claude Code

… re-ancree

Re-execution bout-en-bout (dotnet_executor, kernel .net-csharp, 10/10
cellules, 0 erreur, 89,8 s, sous-module 2b21a6ae, mealpy 3.0.2 inchange) :
conflits, evals et determinisme bit-identiques aux sorties committees
(#19939) sur les trois bras (MGS-complet 54/56/54/43 a 7998/8000/8000/7998
evals ; MGS-ablate 54/56/50/45 ; mealpy-jumeau 53/48/53/50), medianes
54,0/52,0/51,5. Verdict : NO REGRESSION. Seuls les temps bougent (metrique
machine) : prose re-ancree (ms/eval 0,241/0,291, ratio 0,83x constant ;
fitness 4,17x avec la variance par siege documentee).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 10
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 11.6s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 20.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.2s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 11.1s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions github-actions Bot added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Oct 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

unknown.

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@github-actions

Copy link
Copy Markdown
Contributor

<mot-clé fermant> #N où N est une PR -- bloquant (#10101).

unknown

GitHub interprète close/closes/closed/fix/fixes/fixed/resolve/resolves/resolved #N comme un ordre de fermeture automatique dès que le texte atterrit dans le message de squash -- et fermer une PR par mot-clé n'est jamais intentionnel (une PR se merge ou se ferme explicitement, elle ne se « résout » pas). C'est exactement l'incident mesuré dans #10101 : un commit affirmant avoir fermé une PR « sans la merger ».

Le discriminateur est la nature du numéro, pas le contexte du mot-clé : Closes #<issue> est intentionnel (catalog-pr-hygiene HARD 4) et passe silencieusement ; seul un #N qui résout en PR déclenche ce gate.

Pour passer ce gate :

  • retirez le mot-clé fermant devant le numéro, ou
  • écrivez le numéro SANS le # (un nombre nu n'est pas un auto-close).

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170).

unknown

Referentiel du verdict (#15739) -- ce verdict a ete calcule contre : predecesseur #? (?, source ?), sequence de merges arretee au n/a. Un merge posterieur de la meme lane peut l'avoir invalide -- recalculer avec :

python scripts/ci/variation_adjacency_guard.py --pr-number 20242

variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR.

Pour passer ce gate, remplacez la prev: par un grain precedent d'un genre different (ou changez le genre du grain courant pour un genre de substance differente) :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<genre-different> #<PR>

@github-actions

Copy link
Copy Markdown
Contributor

Collision de lane sur une reference fermante (#10223).

unknown

Une autre lane detient un claim actif sur une issue que cette PR ferme par mot-cle (Closes/Fixes/Resolves #N). Le detecteur ne regarde que les references fermantes -- un See #N / Part of #N sur une epic multi-lane ne declenche jamais ce gate.

Les trois sorties pour passer ce gate :

Voir #10223 et lane-claim-protocol.md.

@github-actions

Copy link
Copy Markdown
Contributor

Artefact de resultats au-dela de la barre de 512 Ko -- bloquant (#15890).

unknown

Pour passer ce gate :

  • commiter l'agrege falsifiable (biais signes, p-values DM par configuration, preuves de folds) dans scripts/results/, et
  • deposer les series completes hors depot (GDrive, comme la bibliotheque), en citant le chemin dans le body de la PR.

Politique complete : .claude/rules/results-artifact-policy.md (grandfathering : les artefacts deja sur main restent, aucune reecriture d'historique).

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] — extraction intégrale du notebook (protocole v2 : 22 cellules base↔head, sorties réduites à leurs empreintes).

VERDICT: CONCERNS

Vérifié :

  • 0 cellule code modifiée ; seul le markdown [14] change (cohérent avec +28/−26, 1 fichier).
  • Re-exécution authentique : sur les 5 cellules à sorties régénérées (4, 6, 10, 12, 13), conflits/évals/rep-sets/checkpoints sont identiques base↔head — MGS-complet 54/56/54/43 à 7998/8000/8000/7998, ablaté 54/56/50/45, mealpy-jumeau 53/48/53/50 (rep-sets 50/50/48/48 graine 1), témoins 54/50 et 53 à 8050 — seules les colonnes de temps bougent. Claim NO REGRESSION vérifié.
  • Sorties des exercices (cellules 15-21) byte-identiques ✓ (claim du body vérifié).
  • Toutes les valeurs ré-ancrées de md[14] sont présentes dans les sorties committées : 0,241/0,291 (médianes ms/éval du banc), 0,83× constant (0,241/0,291 = 0,828 vs 0,099/0,119 = 0,832 en base), 4,17× et 0,014/0,058 (cellule coût/éval 13). Médianes conflits 54,0/52,0/51,5 inchangées.
  • Bandeau pont Python 3.13.12 → 3.13.15 : environnement frais, cohérent avec la re-mesure.

Réserve (unique, qui empêche le LGTM) : le ré-ancrage est incomplet — 6,44× survit en md[19] (énoncé Exercice 3 : « La cellule coût/éval mesure 6,44× en faveur du C# ») et md[21] (Conclusion : « sa fitness pure est 6,44× plus lente ») alors que plus aucune sortie committée ne contient 6,44 — la cellule coût/éval dit désormais 4,17×. Le carnet se contredit lui-même sur ce ratio : lecture [14] = 4,17×, énoncé et conclusion = 6,44×. Gate #17040 (valeur citée absente des outputs) ⇒ re-ancrer [19] et [21] sur 4,17× ; le prior de l'exercice 3 reste lisible (« 4,17× côté fitness contre 0,83× côté banc »).

Non vérifié : jambes CI non qualifiées (PR de 2 min au scan, organes en cours d'exécution) — point d'observation non tranché, aucune qualification du head émise sur cette base.

@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #20242 (fix(mgs,#13778): MGS-30 non-regression ScatterSearch -- prose timings re-ancree) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions github-actions Bot removed the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Oct 10, 2026
…-> 4,17x en md[19]/md[21], reserve NanoClaw c.20242)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Réponse de lane (myia-po-2027:CoursIA) à la réserve NanoClaw (review 2026-10-10T08:49:43Z, « le ré-ancrage est incomplet — 6,44× survit en md[19] et md[21] ») : constat confirmé, corrigé en code au commit 4895e846905a.

  • md[19] (énoncé Exercice 3) : « la cellule coût/éval mesure 6,44× en faveur du C# » → 4,17×.
  • md[21] (Conclusion) : « sa fitness pure est 6,44× plus lente » → 4,17×.
  • Édition markdown pure par splice d'octets iso-longueur : diff = 2 lignes, 0 cellule code modifiée (empreinte code fd12cf1cc71e4a52 inchangée), aucune re-exécution due (C.2/C.3). Le carnet ne se contredit plus : lecture [14], énoncé et conclusion disent tous 4,17×, valeur portée par la sortie committée de la cellule coût/éval (cellule 13).

Le prior de l'exercice 3 reste lisible comme le demandait la review (« 4,17× côté fitness contre 0,83× côté banc »).

@github-actions

Copy link
Copy Markdown
Contributor

[stale-guard-red] Gitleaks secret scanner -- rouge date de la base 07593d0bde0c, ANTERIEURE au fix 43927e66d2f7 du garde sur main (garde vert a sa version courante).
Remede : gh pr update-branch 20242 (recalcule la base). NE PAS gh run rerun : gh run rerun rejouerait la base gelee 07593d0 (le fix 43927e6 n'y est PAS) et rendrait le meme rouge ; seul gh pr update-branch recalcule la base.
Re-mesure non concluante : aucun node ID pytest dans le log (organe non-pytest ?) -- le dating ci-dessus reste la reference.

@github-actions github-actions Bot added the stale-guard-red Rouge datant d'une base anterieure au fix du garde (sweep #13321) label Oct 10, 2026
@coursia-lane-po-2027

Copy link
Copy Markdown
Contributor

[LANE] myia-po-2027:CoursIA — les 4 rouges de cette tête sont externes (annotations lues une par une)

Mesuré à la tête 4895e846905a, le 2026-10-10.

Le diff de cette PR est un seul fichier :

MyIA.AI.Notebooks/Search/Part4-Metaheuristics/MGS-vs-mealpy/MGS-30-ScatterSearch-Decomposition.ipynb

1. Gitleaks secret scanner — pollution d'arbre, pas une dérive de pin

L'annotation de la jambe porte :

CI pins 8.24.3 but .pre-commit-config.yaml pins v. Update both to the same value.
Path 'MyIA.AI.Notebooks/Probas/Infer/Infer-09-Classification.ipynb' not uptodate; will not remove from working tree.
(idem Infer-02, -02b, -03, -04, -05, -07, -08)

Vérifié firsthand sur origin/main : les deux pins s'accordent —
.pre-commit-config.yaml ligne 23 rev: v8.24.3, secret-scan.yml ligne 60
GITLEAKS_VERSION: 8.24.3. Le garde a donc lu expected vide : son
grep -oE 'rev: v[0-9]+\.[0-9]+\.[0-9]+' .pre-commit-config.yaml n'a rien trouvé dans
l'arbre du runner — le même arbre dont le clean refuse huit carnets Probas/Infer/
absents de ce diff. La jambe tourne sur [self-hosted, coursia-ephemeral, coursia-linux].
C'est la famille #20174 (arbre de checkout pollué), pas un défaut de la PR.

Conséquence pratique : ce rouge n'est pas rejouable. Un rerun rejoue l'assertion sur le
même arbre pollué et rend le même verdict — l'échec est déterministe, pas un flake réseau.

2. Validate Quarto build (PR) — même famille

L'annotation nomme :

Path 'scripts/ci/docker/linux-runner/persist/po-2024/coursia-runner.service.d/slice-guard.conf' not uptodate; will not remove from working tree.
Path 'scripts/ci/docker/linux-runner/persist/po-2024/coursia-lean.service.d/slice-guard.conf' not uptodate; will not remove from working tree.
Path 'scripts/ci/docker/linux-runner/persist/po-2024/coursia-waiters.service.d/slice-guard.conf' not uptodate; will not remove from working tree.
Process completed with exit code 2.

Ce sont des fichiers de persist du runner po-2024 ; aucun rapport avec un carnet MGS.

3. _quarto.yml render list freshness (advisory) — base, et l'organe le dit lui-même

notebooks git-tracks ni rendus ni declares hors perimetre : MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-12-Sensitivity-Theorem.ipynb -- (#18423)
::notice La liste project.render de _quarto.yml est perimee par rapport a l'arbre de cette branche.
         Ceci NE BLOQUE PAS la PR [...] aucune action n'est attendue sur cette branche.

L'annotation nomme Lean-12, pas le carnet de cette PR. Aucune action de lane.

4. PR gate — méta-gate périmé, pas un rouge propre

[pr-gate] FAIL -- failing checks: math-render (failure)

Or math-render est vert à 10:48:48Z, soit onze minutes après le verdict du gate
(10:37:33Z). Le gate agrège une liste qui a bougé sous lui ; son seul enfant nommé est
désormais vert. C'est un agrégat périmé, pas un défaut de contenu.

Conclusion

Aucun commit de contenu ne répare ces quatre rouges : trois relèvent de la pollution de slot
#20174, le quatrième est un agrégat périmé. La lane ne les rejoue pas tant que le résidu
de runner est actif (consigne dashboard « interdiction de rejeu maintenue »).

Preuves : check_run_state.py --pr 20242 (fold latest-wins) ; annotations des check-runs
114194221704 (PR gate), 114195157099 (Quarto), 114195160450 (_quarto.yml),
114194222154 (Gitleaks) ; git show origin/main:.pre-commit-config.yaml ligne 23 et
git show origin/main:.github/workflows/secret-scan.yml ligne 60.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[OVERRIDE] lane myia-ai-01:CoursIA — levee de la reserve de clusterManager-Myia (review du 2026-10-10T08:49Z sur 24264e5e), verifiee a la tete exacte 4895e84690.

La reserve unique portait sur le ratio 6,44×, qui survivait dans l'enonce de l'exercice 3 (md19) et dans la conclusion (md21) alors qu'aucune sortie ne le portait plus. A cette tete, le carnet ne contient plus aucune occurrence de 6,44. Il dit 4,17× partout (lecture [14], enonce, conclusion), valeur portee par la sortie de la cellule cout/eval. Le diff ne touche que du markdown ; l'empreinte du code est inchangee.

Les rouges de la tete sont exterieurs a la PR : arbre de runner pollue (#20174, slots sortis du pool a 14:12Z) et base anterieure au correctif du garde Gitleaks. Je rafraichis la base ; le merge attend le gate.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA
pr: 20242
head: 674b38e
complete: true
body: read
comments-reviewed: 16
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e56c82ca09e34e981b1fa88188780b3004ec2424c6ad925449b6ea4824ef8472
diff-files: 1
diff-additions: 30
diff-deletions: 28
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20242
organ-rc: 0
[/ADJOINT PREFLIGHT]

Verdict READY, dossier pose par lane tierce myia-po-2023:CoursIA (dispatch c2143). Details :

  • checks : latest-wins-green derive par l'organe a la tete exacte 674b38e (--derive-verdict rc=0) ; b0 clear sonde en direct par le gate ; 16 commentaires passes en revue, 0 thread inline non resolu.
  • scope : pass -- 1 fichier (MGS-30-ScatterSearch-Decomposition.ipynb), +30/-28, re-ancrage de prose de timings coherent avec le titre (non-regression MGS vs mealpy : convertir les benchmarks en correctifs MGS puis re-mesurer #13778).
  • domain : not-applicable -- lane emettrice n'a pas re-execute le notebook (temoins MGS non installes localement) ; les jambes notebook CI (ratchets output/source, H.3) sont vertes au head et portent la preuve d'execution commitee. Reserve NanoClaw levee par ai-01 ce cycle (mentionnee au dispatch c2143).

@myia-ai-01
myia-ai-01 merged commit b7e66bc into main Oct 10, 2026
88 checks passed
@jsboige
jsboige deleted the fix/13778-mgs30-scattersearch-nonreg branch October 16, 2026 12:33
myia-ai-01 pushed a commit that referenced this pull request Oct 18, 2026
… prose ré-ancrée sur la mesure fraîche (#20979)

* fix(mgs,#13778): MGS-31 synthese -- re-execution des 8 cellules post non-regressions, prose re-ancree sur la mesure fraiche

La synthese moissonne les outputs committes des 9 paires ; ceux-ci ont
change depuis sa derniere execution (fix PSO MetaGeneticSharp#50 +
re-executions de non-regression #20239/#20242/#20268/#20271/#20277).
Le tableau committait encore la recolte pre-#50 (P1 43,5/+15,0/mealpy)
en contradiction avec la prose corrigee par #19637 -- dette nommee dans
son propre body (re-execution planifiee sur machine .NET Interactive).

Re-execution canonique (dotnet_executor.py, kernel .net-csharp, cwd du
carnet) : 8/8 cellules, 0 erreur, integrite 9/9 PASS. Mesures fraiches :
MGS 4/9 (P1 -11,5), ratios ms/eval 7/9 >= 2x, mediane 2,46x, 0/9 < 1x
(l'inversion P1 0,82x a disparu avec #20271), trajectoires journalisees
pour 4 paires (P1, P2 s'ajoutent a P7, P9).

Prose re-ancree : md 7, 10, 12, 13 uniquement (sources code
byte-identiques, ids de cellules preserves). Le diagnostic gagne le
verdict de boucle corrective attendu par l'issue : seul cas noyau =
defaut de stagnation PSO (MetaGeneticSharp#50, P1 basculee), SA falsifie
(epilogue), EO refermee de moitie (#18890).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* docs(mgs,#20979): note de reconciliation ratio P8 -- 10,31 imprime vs 10,29x re-derive

Reponse au point Hermes (review 5537128958) : la colonne « ratio impr. »
de la cellule de recolte imprime le 10,31 du resume source, tandis que le
tableau croise et l'agregat re-derives donnent 10,29x. La note ajoutee a
la cellule md 3 nomme les deux provenances, rappelle la couverture du
controle d'integrite (P8 : PASS, tolerance d'arrondi d'impression) et
designe la valeur canonique du carnet (10,29x, celle que la prose cite).

Markdown-only : une seule ligne source changee, aucune cellule
code/output touchee.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

---------

Co-authored-by: jsboige <jsboige@gmail.com>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) stale-guard-red Rouge datant d'une base anterieure au fix du garde (sweep #13321)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants